typedstream StreamTable HashTable Object [20c] typedstream [1449c] typedstream HashTable Object Controller HeaderClass %%%%i@@ /usr/include/machine/vm_types.h genericobject_nib soundFileTextField machineSwitch logText memberBrowser useNetworkSwitch alertSound alertWindow addMachineField visualAlertSwitch memberStore useConferenceSwitch realSwitch addMachinePanel machineBrowser inputText listen noisyAlertSwitch activateOnAlertSwitch speak coverButton loginSwitch windowDidDeminiaturize: connectMember: addMachine: setDefaults: changePref: doNetworkTimedEntry: doConferenceFile: appDidInit: fetchSound: doNetwork: connectMachine: disconnectMember: textDidEnd: doAlarmTimedEntry: getDefaults: removeMachine: selectAllMembers: windowWillMiniaturize: disconnectMachine: yeahRight: addMachineQuit: quit: input: addMachineOk: FirstResponder firstnib checkSpelling: alignSelCenter: unscript: pasteFont: runPageLayout: superscript: copyRuler: copyFont: selectAll: pasteRuler: toggleRuler: showGuessPanel: alignSelLeft: paste: performClose: arrangeInFront: subscript: copy: alignSelRight: delete: orderFrontColorPanel: underline: performMiniaturize: [19896c] typedstream HashTable Object NXImage Conference NXBitmapImageRep NXImageRep iissss00 [576c] UUUUUP UUUUUP Conference_H ?UUUUU_ =UUUUU_ NibData @@@@s Storage {*@@} [65{*@@}] File's Owner CustomObject Application MainMenu MenuTemplate *@*@ccc Matrix Control Responder @:@iiii MenuCell ButtonCell ActionCell Helvetica Info Panel... Help... Preferences... ff@@#::s submenuAction: Bitmap menuArrow Participants... Conference Log... Paste Select All MenuItem Participants WindowTemplate iiii***@s@ Window NXBrowser @@::#@ssssi** NXBrowserCell BrowserItem Connect Disconnect Button ControllerInstance Controller LogWindow Conference Log ScrollView ClipView ciifffcfffs [157c]{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} \margl40 \margr40 \pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\b0\i0\ul0\fs24 NXCursor NXibeam Scroller _doScroller: @@@ffs" TextField TextFieldCell [108c]{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} \margl40 \margr40 \f0\b0\i0\ul0\ql\fs24\fi0\li0\gray0\up0\dn0 Input:) ScrollingText Field2$ ScrollingText1+ Field1 Panel Times-Bold$ Version 1.2 by ... 1Copyright 1991,ThugWare Inc. All Rights Wronged.G Thomas K. Burkholder Button1N9 Field1?95I9 VersionNumberD97Q9 HelpWindow [9725c]{\rtf0\ansi{\fonttbl\f1\fnil Times-Roman;\f0\fswiss Helvetica;} \margl40 \margr40 {\colortbl\red0\green0\blue0;} \pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f1\b\i0\ul0\fs48 Introduction, or "Why Conference 1.2"\ \f0\b0\fs24 \ This is Conference 1.2. The only modification to Conference 1.1 was a few bug fixes and a small change to the info panel. (After I released Conference 1.1, I realized that the info panel still read version 1.0. Now it reads 1.2. Nobody's perfect.) Thanks to Scott Greenman for reporting the bug in the Preferences panel - the "Get Sound" button now updates the Defaults database as it should. Thanks also to all the other folks who gave me feedback. I encourage anyone who uses this program to please report any bugs or percieved failings in it to me, so that the next version, if and when, will be better.\ A new discovery I've made since posting version 1.1 is that Conference works across internet links. Much to my surprise. The Speaker/Listener methods seem to be written with this in mind. The utility of Conference could be much greater than I had thought. So if you regularly correspond with someone on a next via e-mail, give Conference a shot instead, to see if you can get an interactive session going from two or more widely-separated sites. I would greatly appreciate hearing about any successes or failures doing this.\ The only difference between version 1.1 and 1.0 was that 1.1 now defaults to the "Use Network" switch in the NO position, as several people claimed that the application looked really neat, but when they tried to run it it just sat there and responded to half of their events. Also, Conference 1.1 is released with the Conference executable stripped, so that the size is about one fifth what it was before.\ \f1\b\fs48 Conference 1.2: \f0\b0\fs24 \ Welcome to Conference, a nifty new app I wrote for no real reason. Conference does essentially what the unix "talk" utility does, but with a real user interface. Also, Conference is much more functional than Talk. As the name implies, Conference is designed to let a number of people on a network hold a conference... that is, direct what they have to say to more than one person at a time.\ \f1\b\i\fs36 Licence (Sort Of): \f0\b0\i0\fs24 \ I hereby release this in the public domain. Do whatever you want with it, but please don't try to sell it. It would be kind of you to attribute to me any of the code you use directly, but don't feel obligated unless you use the whole thing. \b Please \b0 send me bug reports, I have no idea how solid this thing really is, and I will probably fix bugs and re-post a new version of the code. Please note that "It doesn't run under X" is not a bug. To quote someone famous "X is brain-dead."\ \f1\b\i\fs36 Operation: \f0\b0\i0\fs24 \ The operation of Conference is simple. Drag the program to your dock, double click on it. In the window labeled "Participants", you will find a list of people who are currently running Conference somewhere on the network. (This is no longer true in Conference 1.1. To understand how to add and remove recipients to your list, see the "Preferences" section of this document.) To send a message, simply select the people you want to receive your message in the browser, using the ordinary NextStep click-and-drag paradigm, and type your message in the TextField labeled "Input", located at the bottom of the "Conference Log" window. As soon as you enter a carriage return, your message will disappear from the "Input" field, and appear in the "Log" fields of all of the recipients that you selected. In addition, your message is always echoed to your own "Log" field, preceeded by your name, in bold. Other's messages will appear beside their names, which are echoed to the "Log" field in italics. It's really that simple. There is nothing more to Conference but a whole bunch of Preferences that make the program easier to live with.\ The Connect and Disconnect buttons located at the top of the "Participants" window allow you to connect or disconnect from a participant. Their function is self-explanatory, so I won't explain it, other than to note that the Disconnect button only disconnects you from the \ul last \ul0 selected participant. The Select All button, obviously, selects all the participants in the browser.\ \f1\b\i\fs36 Preferences:\ \f0\b0\i0\fs24 \ You can obtain the preferences panel by typing command-p, or selecting Info/Preferences from the main menu. There are three important sections to the Preferences panel. They are easily separated by their titles. In the panel there is a box labeled "Machines", another labeled "Identify By", and another labeled "Message Alerts". It should be noted that all of the preferences that you set in the preferences panel are permanent, and will remain in the setting that you choose even after you quit the program.\ The first, and largest box, entitled "Machines" controls how the program will initially connect to other machines. The two most important options here are located at the top of the box, entitled "Use ".conference" file" and "Use Network Info". The first switch, when turned on, will cause the program to read a file from the current user's home directory, called ".ConferenceMachines". When told to read this file, the program will take each line and try to connect to a Conference program on the machine described by the line. You should not edit this file directly, at least not when the program is running. To add and remove machines from this file, use the Add and Remove buttons located to the right of the browser. The browser itself should at all times show what is contained in the ".ConferenceMachines" file. The other switch, located at the top right of the box, when selected will cause the program to poll the entire network for machines running Conference. Care should be used when selecting this switch, as large networks can take some time to scan completely, and while the program does not hang for the entire time the scanning takes place, it does hang for seconds at a time. This switch is best set only when connected to networks of about 10-20 machines or less. The connect and Disconnect buttons in the "Machines" box will allow you to connect to or disconnect from the machine currently selected in the browser to the left. Conference 1.1 now assumes that you are on a large network, and this switch is in the "OFF" position by default. If you are on a small network (10 machines or less) you may want to turn this switch on.\ The second box, entitled "Identify By:", controls what the name of a message sender or recipient looks like in the "Participants" and "Log" windows. The three switches toggle whether the user's login name, real name, and machine to which they are logged in will be shown. it is usually most convenient to leave either or both of the login and real names selected.\ The third box, entitled "Message Alerts" , controls how the program will prompt you when you recieve a message after hiding Conference or iconifying the "Conference Log" window. The first switch, when set, unhides the application when a message is recieved. The second switch causes the Conference program icon to flash several (5) times. The third swich causes an audible alert, either the system beep or a sound which you may supply by entering the pathname into the field at the bottom of the box or by pressing the "Get Sound" button and selecting a sound from the Open panel.\ \f1\b\i\fs36 Defaults: \f0\b0\i0\fs24 \ As mentioned before, all of the items in the Preferences panel are set permanently as soon as you change them. For dread/dwrite/dremove enthusiasts, the following are the names and values of the settable defaults:\ \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\fc0 Conference ActivateOnAlert YES/NO\ Conference ShowLogin YES/NO\ Conference ShowMachine YES/NO\ Conference ShowReal YES/NO\ Conference UseConference YES/NO\ Conference UseNetwork YES/NO\ Conference UseNoiseAlert YES/NO\ Conference UseVisualAlert YES/NO\ \pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600 Conference SoundFile \ \f1\b\i\fs36 The Source Code: \f0\b0\i0\fs24 \ I've included the source with this release, because I think it might be useful to anyone writing simple Speaker/Listener code. Methods used in Conference include:\ Speaker/Listener\ Timed Entry\ Reading/Writing to the Defaults database\ Using the UNIX hostent routines\ Multiple NXBrowsers with the same delegate\ Modifying the Application icon\ Peer-to-peer model communications code (as apposed to server/client)\ Using the Storage object\ Using the UNIX pwent routines\ Text, Application, and NXBrowser delegation\ How to make the *!@#$* Makefile do a msgwrap when it ought to.\ Note that in almost all of these areas, the code is fairly simple. In almost none of the above areas does the program use more than a few of the routines provided. This application could be useful to anyone curious about how to do basic things in the above areas. If you wan to do anything really complex or obscure, chances are you won't find it in this code.\ For any further information, e-mail me, Thomas Burkholder, at\ burkhold@scheme.cs.ubc.ca (NextMail OK)\ UBC undergrad (CPSC 4),\ Next Developer, and\ Next Campus Consultant.\ When I speak, I speak in gutteral monosylables. There is no possible way that anything that I say can be attributed to anyone but me. In no way, shape or form do I speak for anyone but myself. Cross my heart, hope to die, plunge a needle in my eye, etc. Preferences Login Name NXswitch NXswitchH Real Name Machine Name Identify By: Use ".conference" file Use Network Info Remove Machines Audible Alert Activate On Alert Visual Alert Get Sound Message Alerts AddMachine Add Machine Machine: Cancel NXreturnSign CoverButtonPanel {i*@@@} [51{i*@@@}] hide: copy: paste: selectAll: makeKeyAndOrderFront: delegate logText memberBrowser quit: orderFront: inputText changePref: useConferenceSwitch machineBrowser useNetworkSwitch addMachinePanel addMachineField performClick: addMachineOk: addMachineQuit: loginSwitch realSwitch machineSwitch activateOnAlertSwitch visualAlertSwitch noisyAlertSwitch soundFileTextField fetchSound: coverButton addMachine: removeMachine: connectMachine: disconnectMachine: connectMember: disconnectMember: selectAllMembers: yeahRight:Z